<%@ page import="com.example.el.User" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>EL基本使用</title>
</head>
<body>
<%--EL表达式概念：
        它是Expression Language的缩写。它是一种替换jsp表达式的语言。
    EL表达式的语法：
        ${表达式}
        表达式的特点：有明确的返回值。
        EL表达式就是把内容输出到页面上
    EL表达式的注意事项：
        1.EL表达式没有空指针异常
        2.EL表达式没有数组下标越界
        3.EL表达式没有字符串拼接
    EL表达式的数据获取：
        它只能在四大域对象中获取数据，不在四大域对象中的数据它取不到。
        它的获取方式就是findAttribute(String name)
 --%>

<h2>-----------获取对象数据---------------------</h2>
<%
//把用户信息存入pageContext域中
    User user = new User();
    pageContext.setAttribute("u",user);
%>
${u}===============输出的是内存地址<%--就相当于调用此行代码<%=pageContext.findAttribute("u")%> --%>
<br/>
${u.name}<%--就相当于调用此行代码<% User user = (User) pageContext.findAttribute("u");out.print(user.getName());%> --%>
<br/>
${u.age}
<br/>
<h2>-----------获取关联对象数据------------------</h2>
<br/>
${u.address} ==========输出的address对象的地址<br/>
${u.address.province} - ${u.address.city}
<br/>
${u["address"]["city"]}
<br/>
<h2>-----------获取数组数据---------------------</h2>
<br/>
<% String[] cityArray = new String[]{"北京","上海","广州","深圳"};
    pageContext.setAttribute("citys", cityArray);
%>
${citys[0]}=========取的数组中下标为0的元素<br/>
${citys[3]}<br/>
<%--<%--%>
<%--    String[] cs=pageContext.getAttribute("citys");--%>
<%--    out.print(cs[5]);--%>
<%--%>--%>
${citys[5]}
<br/>
<h2>-----------获取List集合数据-----------------</h2>
<br/>
<%
    List<String> listData = new ArrayList<>();
    listData.add("AAA");
    listData.add("BBB");
    listData.add("CCC");
    listData.add("DDD");
    pageContext.setAttribute("list",listData);
%>
<br>
${list}
<br/>
${list.get(2)}
<br/>
${list[3]}
<br/>
<br/>
<h2>-----------获取Map集合数据------------------</h2>
<br/>
<% Map<String,User> map = new HashMap<String,User>();
    User value = new User();
    map.put("user", value);
    pageContext.setAttribute("mapInfo", map);
%>
<br/>
${mapInfo}<br/>
${mapInfo.user}<br/>
${mapInfo.user.name} - ${mapInfo.aaa.age}<br/>
${mapInfo["user"].name}<br/>
${mapInfo.user.address.city}

<br/>
${headerValues}


</body>
</html>
